#include <stdio.h>
#include <stdlib.h>
#include "cliente.h"
#include "documento.h"
#include "encomenda.h"
#include "fornecedor.h"
#include "funcionario.h"
#include "mercadoria.h"
#include "projeto.h"
#include "arquivos.h"
#include "lista de encomendas.h"
#include "lista de pagamentos.h"

int retornaID (){
   static int id=0;
   id++;
   return id;
}

int main(){
	Cliente *lista_cliente;
	Fornecedor *lista_fornecedor;
	Funcionario *lista_funcionario;
	Mercadoria *lista_mercadoria;
	Projeto *lista_projeto;
	Encomenda *lista_encomenda;
	Documento *lista_doc;
	int op;
	int cod;

	while (op!=0){
		printf("Qual operação você deseja realizar?\n\n");
		printf("1- Efetuar novo cadastro.\n");
        printf("2- Alterar cadastro.\n");
        printf("3- Efetuar novo registro.\n");
        printf("4- Alterar registro.\n");
        printf("0- Sair\n");
        scanf("%d",&op);

		switch (op){

			case 1:
			while (op!=5){
				printf("O que você deseja cadastrar?\n");
				printf("1- Cadastrar novo cliente.\n");
				printf("2- Cadastrar novo fornecedor.\n");
				printf("3- Cadastrar novo funcionário.\n");
				printf("4- Cadastrar nova mercadoria.\n");
				printf("0- Voltar\n");
				scanf("%d",&op);

				switch(op){
					case 1:
					cadastrar_cliente(*lista_cliente,retornaID());
					break;

					case 2:
					cadastrar_fornecedor(*lista_fornecedor,retornaID());
					break;

					case 3:
					cadastrar_funcionario(*lista_funcionario,retornaID());
					break;

					case 4:
					cadastrar_mercadoria(*lista_mercadoria,retornaID());
					break;

					case 0:
					op=5;
					break;

					default:
					printf("Opção inválida!");
					break;
				}
			}
			break;

			case 2:
			while (op!=5){
				printf("Que tipo de cadastro você deseja alterar?\n");
				printf("1- Alterar cadastro de cliente.\n");
				printf("2- Alterar cadastro de fornecedor.\n");
				printf("3- Alterar cadastro de funcionário.\n");
				printf("4- Alterar cadastro de mercadoria.\n");
				printf("0- Voltar\n");
				scanf("%d",&op);

				switch(op){
					case 1:
					printf("Informe o código do cliente:\n");
					scanf("%d",&cod);
					alterar_cad_cliente(*lista_cliente,cod);
					break;

					case 2:
					printf("Informe o código do fornecedor:\n");
					scanf("%d",&cod);
					alterar_cad_fornecedor(*lista_fornecedor,cod);
					break;

					case 3:
					printf("Informe o código do funcionário:\n");
					scanf("%d",&cod);
					alterar_cad_funcionario(*lista_funcionario,cod);
					break;

					case 4:
					printf("Informe o código da mercadoria:\n");
					scanf("%d",&cod);
					alterar_cad_mercadoria(*lista_mercadoria,cod);
					break;

					case 0:
					op=5;
					break;

					default:
					printf("Opção inválida!");
					break;
				}
			}
			break;

			case 3:
			while (op!=5){
				printf("O que você deseja registrar?\n");
				printf("1- Registrar novo projeto.\n");
				printf("2- Registrar nova encomenda.\n");
				printf("3- Registrar nova compra.\n");
				printf("4- Registrar novo documento acessório.\n");
				printf("0- Voltar\n");
				scanf("%d",&op);

				switch(op){
					case 1:
					cadastrar_projeto(*lista_projeto,retornaID());
					break;

					case 2:
					cadastrar_encomenda(*lista_encomenda,retornaID());
					break;

					case 3:
                    //Verificar função de registro de compra
					break;

					case 4:
					cadastrar_doc(*lista_doc,retornaID());
					break;

					case 0:
					op=5;
					break;

					default:
					printf("Opção inválida!");
					break;
				}
			}
			break;

			case 4:
			while (op!=5){
				printf("Que tipo de registro você deseja alterar?\n");
				printf("1- Alterar registro de projeto.\n");
				printf("2- Alterar registro de encomenda.\n");
				printf("3- Alterar registro de compra.\n");
				printf("4- Alterar registro de documento acessório.\n");
				printf("0- Voltar\n");
				scanf("%d",&op);

				switch(op){
					case 1:
					printf("Informe o código do projeto:\n");
					scanf("%d",&cod);
					alterar_cad_projeto(*lista_projeto,cod);
					break;

					case 2:
					printf("Informe o código da encomenda:\n");
					scanf("%d",&cod);
					alterar_cad_encomenda(*lista_encomenda,cod);
					break;

					case 3:
                    //Verificar função de registro de compra
					break;

					case 4:
					printf("Informe o código do documento:\n");
					scanf("%d",&cod);
					alterar_cad_documento(*lista_doc,cod);
					break;

					case 0:
					op=5;
					break;

					default:
					printf("Opção inválida!");
					break;
				}
			}
			break;

			case 0:
			break;

			default:
			printf("Opção inválida!");
			break;

		}
	}
}
